package homeword;

import java.util.Calendar;

/**
 * 这里对于利息的计算需要新增计划任务。
 */
public class Test02 {
    public static void main(String[] args) {
        BankAccount account = new BankAccount(100);
        //每个月都有利息产生(这个怎么计算？看每个月有多少钱！),每个月有3次免手续费
        //我需要知道每个月交易了几次，要存储每个月的交易次数
        //下标表示第几个月，数组的值为每个月的交易次数，下标从0开始，0不用管
        account.deposit(1000);
        account.withdraw(500);
        account.deposit(1000);
        account.withdraw(500);
        account.deposit(1000);
        //每个月都有利息产生(这个怎么计算？看每个月有多少钱！),每个月开始第一天，都计算上一个月的利息
        //然后把利息加入到放到余额里，
        //需要有个数组存储每个月拿利息的本金是多少钱

        //需要有个数组存储每个月利息总额是多少钱
        /*
        每个月都会有第一笔交易，我们可以计算，如果本月是第一笔交易，那就先把利息放到余额里
        情况，某个月我们根本就没有交易，那就不用计算利息，直接把利息加到余额里，然后下一个月，再计算利息，
         */





    }
    //获取当前月份的方法
    public static int getCurrentMonth() {
        // 创建一个Calendar实例
        Calendar calendar = Calendar.getInstance();
        // 获取当前月份（注意：月份是从0开始计数的，所以需要加1）
        return calendar.get(Calendar.MONTH) + 1;
    }
    //写个方法判断要不要收手续费,不用收的
    public static boolean shouldChargeFee(int[] monthDealCount) {
        int month = getCurrentMonth();
        if (monthDealCount[month] >= 3) {
            //收手续费咯
            monthDealCount[month]++;//交易次数+1
            return true;
        } else {
            monthDealCount[month]++;
            System.out.println("免手续费：本月交易次数为"+ monthDealCount[month]+"次");
            return false;
        }

    }
}


//银行账户类
class BankAccount {//父类
    int[] monthDealCount = new int[13];
    private double balance ;//余额
    public BankAccount(double initialBalance) {
        this.balance = initialBalance;
    }
    //存款
    public void deposit(double amount)  {
        if(Test02.shouldChargeFee(monthDealCount)){
            System.out.println("存款收取手续费1元");
            balance--;
        }
        balance += amount;
    }
    //取款
    public void withdraw(double amount)  {
        if(Test02.shouldChargeFee(monthDealCount)){
            System.out.println("取款收取手续费1元");
            balance--;
        }
        balance -= amount;
    }

    public double getBalance() {
        return balance;
    }

    public void setBalance(double balance) {
        this.balance = balance;
    }
}
